# coding:utf-8

from pyspark import SparkConf,SparkContext
import os
os.environ['JAVA_HOME'] = "/server/jdk"


# 路径要注意！
with open('../words.txt','r') as f:
    file = f.read()


if __name__ == '__main__':
    print('begin')
    conf = SparkConf().setMaster("local[1]").setAppName('WordCountHelloWorld')
    # 通过 SparkConf 对象构建 SparkContext 对象
    sc = SparkContext(conf=conf)

    # 需求：wordcount单词计数，读取HDFS上，word.txt文件，对其内部单词统计出现的数量
    # 读取文件
    try:
        #file_rdd = sc.textFile('hdfs://192.168.133.131:4040/00_example/words.txt')
        file_rdd = sc.textFile('./words.txt')
    except:
        print('error in open file!')

    # 将单词进行切割，得到一个存储全部单词的集合对象
    words_rdd = file_rdd.flatMap(lambda line: line.split(' '))

    # 将单词转换为元组对象，key为单词，value为数字1
    words_with_one_rdd = words_rdd.map(lambda x: (x, 1))

    # 将元组的value 按照key来分组，对所有的value进行聚合操作(相加)
    result_rdd = words_with_one_rdd.reduceByKey(lambda a,b: a+b)

    #通过conllect方法收集rdd的返回值
    print(result_rdd.collect())
